// https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/solution/fan-zhuan-zi-fu-chuan-zhong-de-dan-ci-iii-by-lee-2/

class Solution
{
public:
  string reverseWords(string s)
  {
    int length = s.length();
    int i = 0;

    while (i < length) // i 遍历 整个字符串
    {
      // 记录 每一个单次的 start
      int start = i;

      // 往后 找到 每一个 单词 end
      while (i < length && s[i] != ' ')
        i++;

      // 找到的每一个单词 [left, right]
      int left = start;
      int right = i - 1;

      // 逐个交换 str[left] 与 str[right]
      while (left < right)
      {
        swap(s[left], s[right]);

        left++;
        right--;
      }

      // 交换完 一个单词 继续向后 搜索 第二个单词
      while (i < length && s[i] == ' ')
        i++;
    }

    return s;
  }
};